﻿Ext.namespace('Web.Plugins');
Web.Plugins.DropDownFieldPlugins = function(config) {
    Ext.apply(this, config);
};
Ext.extend(Web.Plugins.DropDownFieldPlugins, Ext.Component, {
    init: function(o) {
        o.onKeyDown = function(e) {
            if (e.getCharCode() == 40) {
                if (grProduct.store.data.length <= 0 ) {
                          
                    o.collapse();
                } else
                    ProductKeyPress(this, e);
            }
        }
    }
});
Web.Plugins.DropDownFieldPluginsF = function(config) {
    Ext.apply(this, config);
};
Ext.extend(Web.Plugins.DropDownFieldPluginsF, Ext.Component, {
    init: function(o) {
        o.onKeyDown = function(e) {
            if (e.getCharCode() == 40) {
                if (grProductF.store.data.length <= 0) {
                    o.collapse();
                } else
                    ProductKeyPressF(this, e);
            }
        }
    }
});

/*
chú thích : bà con nào dùng cái editor cho lưới mà có dùng cái numberfield thì bà con nhớ bỏ thêm tham số này vào 
Name : Grid (hằng số không thay đổi)
CurenCy: mã của tiền tệ, không chọn thì là tiền việt
Value : Truyền vào lưới chứa cái editor numberfield
<Plugins>
<ext:GenericPlugin ID="GenericPlugin1" runat="server" InstanceName="Web.Plugins.renderNumberField">
</ext:GenericPlugin>
</Plugins>
*/
Web.Plugins.renderNumberField = function(config) {
    Ext.apply(this, config);
};
Ext.extend(Web.Plugins.renderNumberField, Ext.Component,
        {
            init: function(o) {
                o.decimalSeparator = '.';
                var _se = ',';
                if (typeof (_config) != 'undefined') _se = _config;
                o.beforeMethod('onFocus', function() {
                    var v = this.getRawValue();
                    this.setRawValue(String(v).replaceAll(',', ''));
                    o.el.dom.select();
                });
                parseValue = function(value) {
                    value = parseFloat(String(value).replace(new RegExp(_se, "g"), '').replace(this.decimalSeparator, "."));
                    return isNaN(value) ? '' : value;
                }
                ,
                o.validateValue = function(value) {
                    value = parseValue(value)
                    if (!Ext.form.NumberField.superclass.validateValue.call(this, value)) {
                        return false;
                    }
                    if (value.length < 1) { // if it's blank and textfield didn't flag it then it's valid
                        return true;
                    }
                    value = String(value).replace(new RegExp(_se, "g"), '').replace(this.decimalSeparator, ".");
                    if (isNaN(value)) {
                        this.markInvalid(String.format(this.nanText, value));
                        return false;
                    }
                    var num = parseValue(value);
                    if (num < this.minValue) {
                        this.markInvalid(String.format(this.minText, this.minValue));
                        return false;
                    }
                    if (num > this.maxValue) {
                        this.markInvalid(String.format(this.maxText, this.maxValue));
                        return false;
                    }
                    return true;
                }
               ,
               o.onKeyDown = function(key) {                   
                   if (key.getCharCode() == 188)
                   { key.stopEvent(); }
                   if (typeof (o.initialConfig.plugins.grid) != 'undefined') {
                       var grid = Ext.getCmp(o.initialConfig.plugins.grid);
                       if (key.getCharCode() == 27) {
                           if (grid.selModel.selections.length > 0)
                               Complete_Search(grid, undefined, grid.selModel.selections.items[0].id);
                           else {
                               if (grid.data.length > 0)
                                   Complete_Search(grid, 0);
                           }
                       }
                   }

               }
               ,
               o.beforeBlur = function() {
                   var CurenCy = o.initialConfig.plugins.CurenCy;
                   var v = Mathround(new Number(parseValue(this.getRawValue()))); //bỏ số 0 đằng sau phần thập phân.
                   v = Mathround(v, CurenCy);
                   v = GetView(v, _se);
                   if (!Ext.isEmpty(v)) {
                       this.setRawValue(v);
                   }
               }
               ,
               o.getValue = function() {
               return Mathround(parseValue(Ext.form.NumberField.superclass.getValue.call(o)));
               }
               ,
               o.setValue = function(v) {
                   v = typeof v == 'number' ? v : parseFloat(String(v).replace(o.decimalSeparator, "."));
                   v = Mathround(v);
                   v = isNaN(v) ? '' : String(v).replace(".", o.decimalSeparator);
                   v = GetView(v, _se);
                   o.setRawValue(v);
               }
            }
        });
